package com.ybkj.daijia.server.sp;

import java.io.Serializable;
import java.util.Date;

/**
 * BJ 单次运营信息 spmodel 经营出发接口 spmodel 经营到达接口 somodel 经营支付接口
 *
 * @author Sakura
 */
public class DcyyMessage implements Serializable {

    private static final long serialVersionUID = -3089684044125795100L;

    private String appKey;

    private String YyFlage;//营运标识

    private String type = Type.MOREQ_DCYY;


    /**
     * BJ 单次运营信息（MOREQ_DCYY）
     */
    private String orderNo;// 订单号

    private String driverName;// 司机姓名

    private String driverIdCode;// 网约车驾驶员证号（即身份证号）

    private String vehicleLicense;// 车牌号码,去除“京”，字母大写

    private Double realVehicleLon;// 车辆实际出发地点经度 ,Double（BD02），精确至小数点后6位

    private Double realVehicleLat;// 车辆实际出发地点纬度 ,Double（BD02），精确至小数点后6位

    private Double destVehLon;// 车辆实际到达地点经度,Double（BD02），精确至小数点后6位

    private Double destVehLat;// 车辆实际到达地点纬度,Double（BD02），精确至小数点后6位

    private Date onTime;// 乘客实际上车时间,yyyy-MM-ddHH:mm:ss

    private Date offTime;// 乘客实际下车时间,yyyy-MM-ddHH:mm:ss

    private String realOnLocation;// 乘客实际上车地点

    private String realOffLocation;// 乘客实际下车地点

    private String passengerTel;// 乘客电话

    private Double noneMil;// 空驶里程,上次运营结束（乘客下车）到本次运营司机接单之间的里程,Double ，公里，精确至小数点后2位

    private Double waitMil;// 待客里程,本次运营接收订单（司机抢单）到本次运营开始（乘客上车）之间的里程,Double，公里，精确至小数点后2位

    private Double passengerMil;// 载客里程,从乘客上车至乘客下车之间的里程,Double公里，精确至小数点后2位

    private Double passengerTime;// 载客时间,从乘客上车至乘客下车经历的时间,Double，分钟，精确至小数点后2位

    private Double lowSpeedTime;// 低速时长 ,运营中低速行驶的时间（低速标准以平台公司定义为准）,Double，分钟，精确至小数点后2位

    private Double waitingTime;// 等候时间,司机到达指定地点至乘客上车经历的时间,Double，分钟，精确至小数点后2位

    private Double cash;// 现金支付金额,Double，元，无填0，精确至小数点后2位

    private Double elePay;// 电子支付金额,包括第三方电子支付、平台账户余额支付等,Double，元，无填0，精确至小数点后2位

    private Double posPay;// Pos机支付金额,Double，元，无填0，精确至小数点后2位

    private Double paid;// 实收金额,应收-优惠金额,Double，元，无填0，精确至小数点后2位

    private Double receivable;// 应收金额,支付金额+优惠金额（支付金额：现金支付金额+电子支付金额+POS机支付金额）,Double，元，无填0，精确至小数点后2位

    private Double bargain;// 优惠金额,因使用优惠券或折扣卷等产生的优惠金额,Double，元，无填0，精确至小数点后2位

    private Double callCharge;// 电召费/预约服务费,乘客下单时单独增加的一次性加价费用（不包括倍数加价）,Double，元，无填0，精确至小数点后2位

    private Double waitingCharge;// 等候费用,由等候时间产生的费用,Double，元，精确至小数点后2位

    private Double extraCharge;// 附加费,（如：高速费、停车费等运营过程中产生的费用）,Double，元，无填0，精确至小数点后2位

    private Double otherExtraCharge;// 其他附加费用,（如：清洁费、出城费、取消费等其他附加费用）,Double，元，无填0，精确至小数点后2位

    private Double rushAddCharge;// 高峰时段时间加价金额,如：早高峰7:00-9:00如：晚高峰17:00-19:00,Double，元，无填0，精确至小数点后2位

    private Double nightAddCharge;// 夜间时段里程加价金额,如：23:00-5:00,Double，元，无填0，精确至小数点后2位

    private Double dynamicsAddCharge;// 动态加价金额,由加价倍数产生的加价金额,Double，元，无填0，精确至小数点后2位

    private Double specialTimes;// 特殊情况加价倍数,特殊情况运价加倍，如：极端天气消费金额为普通天气的1.2倍,Double，精确至小数点后2位,无填默认值1.00

    private String specialTimesNote;// 特殊情况加价倍数说明

    private Double driverIncome;// 司机实收金额,司机在本次订单中的实际收入（以司机端显示金额为准）,Double，元，精确至小数点后2位

    private Double driverReceivable;// 司机应收金额,司机在本次订单中的应收金额（以司机端显示金额为准）,Double，元，精确至小数点后2位

    private String transPriceType;// 运价类型 ,对应运价信息（如果该订单涉及到多个运价类型，使用“|”分隔，总长最大64位）,与接口运价信息（MOREQ_YJXX）记录对应

    private String posAgency;// Pos机收单机构

    private String ePay;// 电子支付机构

    private String calStatus;// 结算状态,0：未结算1：已结算

    private Date calTime;// 结算时间,yyyy-MM-ddHH:mm:ss

    private Date orderTime;//订单时间

    private String billStatus;// 发票状态,0：未开1：已开

    /**
     * spmodel 经营出发接口
     */
    //private String orderId;//订单号（与orderNo重复）

    //private String licenseId;//机动车驾驶证号（与driverIdCode重复）

    //private String fareType;//运价类型编码（与transPriceType重复）

    //private String vehicleNo;//车辆号牌（与vehicleLicense重复）

    //private Long depLongitude;//车辆出发经度（与realVehicleLon重复）

    //private Long depLatitude;//车辆出发纬度（与realVehicleLat重复）

    private Integer encrypt;//坐标加密标识,固定取值

    //private Long depTime;//上车时间YYYYMMDDhhmmss（与onTime重复）

    //private Integer WaitMile;//空驶里程（与noneMil重复）

    /**
     * spmodel 经营到达接口
     */
    //private String orderId;//订单号（与orderNo重复）

    //private Long destLongitude;//车辆到达经度（与destVehLon重复）

    //private Long destLatitude;//车辆到达纬度（与destVehLat重复）

    //private Integer encrypt;//坐标加密标识，固定取值（重复）

    //private Long destTime;//下车时间YYYYMMDDhhmmss（与offTime重复）

    //private Integer driveMile;//载客里程（与passengerMil重复）

    //private Integer driveTime;//载客时间（与passengerTime重复）

    /**
     * somodel 经营支付接口
     */
    //private String orderId;//订单编号（与orderNo重复）

    private String onArea;//上车位置行政区划编号

    //private String driverName;//机动车驾驶员姓名（重复）

    //private String licenseId;//机动车驾驶证号（与driverIdCode重复）

    //private String fareType;//运价类型编码（与transPriceType重复）

    //private String vehicleNo;//车辆号牌（与vehicleLicense重复）

    private Date bookDepTime;//预计上车时间YYYYMMDDhhmmss

    //private Integer waitTime;//等待时间（与waitingTime重复）

    //private Long depLongitude;//车辆出发经度（与realVehicleLon重复）

    //private Long depLatitude;//车辆出发纬度（与realVehicleLat重复）

    //private String depArea;//上车地点（与realOnLocation重复）

    //private Long depTime;//上车时间YYYYMMDDhhmmss（与onTime重复）

    //private Long destLongitude;//车辆到达经度（与destVehLon重复）

    //private Long destLatitude;//车辆到达纬度（与destVehLat重复）

    //private String destArea;//下车地点（与realOffLocation重复）

    //private Long destTime;//下车时间YYYYMMDDhhmmss（与offTime重复）

    private String bookModel;//预定车型

    private String model;//实际使用车型

    //private Integer driveMile;//载客里程（与passengerMil重复）

    //private Integer driveTime;//载客时间（与passengerTime重复）

    //private Integer waitMile;//空驶里程（与noneMil重复）

    //private Integer factPrice;//实收金额（与paid重复）

    //private Integer price;//应收金额（与receivable重复）

    //private Integer cashPrice;//现金支付金额（与cash重复）

    private String lineName;//电子支付机构（与重复）

    //private Integer linePrice;//电子支付金额（与elePay重复）

    //private String posName;//POS机支付机构（与posAgency重复）

    //private Integer posPrice;//POS机支付金额（与posPay重复）

    //private Integer benfitPrice;//优惠金额（与bargain重复）

    //private Integer bookTip;//预约服务费（与callCharge重复）

    //private Integer passengerTip;//附加费（与extraCharge重复）

    //private Integer peakUpPrice;//高峰时段时间加价金额（与rushAddCharge重复）

    //private Integer nightUpPrice;//夜间时段里程加价金额（与nightAddCharge重复）

    private Double farUpPrice;//远途加价金额

    //private Integer otherUpPrice;//其他加价金额（与specialTimes重复）

    //private String payState;//结算状态；固定取值（与calStatus重复）

    //private String payTime;//乘客结算时间（与calTime重复）

    //private String orderMatchTime;//订单完成时间（与calTime重复）YYYYMMDDhhmmss

    //private String invoiceStatus;//发票状态；固定取值（与billStatus重复）

    /**
     * szmodel 乘客上车（CKSC）
     */
    //private String orderId;//订单号（与orderNo重复）

    private String driCertNo;//网约车驾驶员证证号

    private String vehCertNo;//网约车车辆运输证号

    //private String driverName;//驾驶员姓名（重复）

    private String idCode;//身份证号

    //private String vehicleNo;//车牌号（与vehicleLicense重复）

    //private String fareType;//运价类型编码（与transPriceType重复）

    //private String depTime;//乘客上车时间（与onTime重复）

    //private String waitMile;//空驶里程（与noneMil重复）

    //private String waitTime;//等待时间（与waitingTime重复）

    private SjwzMessage sjwzMessage;//乘客上车车辆位置信息

    /**
     * szmodel 乘客下车（CKXC）
     */
    //private String orderId;//订单号（与orderNo重复）

    //private String driCertNo;//网约车驾驶员证证号（与driverIdCode重复）

    //private String vehCertNo;//网约车车辆运输证号（重复）

    //private String driverName;//驾驶员姓名（重复）

    //private String idCode;//身份证号（重复）

    //private String vehicleNo;//车牌号（与driverIdCode重复）

    //private String fareType;//运价类型编码（与transPriceType重复）

    //private String destTime;//乘客下车时间（与offTime重复）

    //private String driveMile;//载客里程（与passengerMil重复）

    //private String driveTime;//载客时间（与passengerTime重复）

    //private Jsydw gps;//乘客下车车辆位置信息（重复）

    /**
     * szmodel 单次运营信息(DCYY)
     */
    //private String orderId;//订单号（与orderNo重复）

    //private String driverName;//驾驶员姓名（重复）

    //private String idCode;//身份证号（重复）

    //private String driCertNo;//网约车驾驶员证证号（与driverIdCode重复）

    //private String vehCertNo;//网约车车辆运输证号（重复）

    //private String depTime;//上车时间（与onTime重复）

    //private String depArea;//上车地点（与onTime重复）

    private SjwzMessage onSjwzMessage;//上车位置信息

    //private String destTime;//下车时间（与offTime重复）

    //private String destArea;//下车地点（与realOffLocation重复）

    private SjwzMessage offSjwzMessage;//下车位置信息

    //private String driveMil ;//载客里程（与passengerMil重复）

    //private String waitMil;//空驶里程（与noneMil重复）

    //private String vehicleNo;//车牌号（与vehicleLicense重复）

    //private String price;//应收金额（与receivable重复）

    //private String factPrice;//实收金额（与paid重复）

    //private String cashPrice;//现金支付金额（与cash重复）

    //private String linePrice;//电子支付金额（与elePay重复）

    //private String lineName;//电子支付机构（重复）

    //private String posPrice;//Pos机支付金额（与posPay重复）

    //private String posName;//Pos机支付机构（与posAgency重复）

    //private String callCharge;//电召费（重复）

    //private String passengerTip;//附加费（与extraCharge重复）

    //private String peakUpPrice;//高峰时段加价金额（与rushAddCharge重复）

    //private String nightUpPrice;//夜间时段加价金额（与nightAddCharge重复）

    //private String payTime;//结算时间（与calTime重复）

    //private String fareType;//运价类型编码（与transPriceType重复）

    //private String bookDepTime;//预计上车时间（重复）

    //private String waitTime;//等待时间（与waitingTime重复）

    //private String bookModel;//预定车型（重复）

    //private String model;//实际使用车型（重复）

    //private String driveTime;//载客时间（与passengerTime重复）

    //private String benfitPrice;//优惠金额（与bargain重复）

    //private String bookTip;//预约服务费（与extraCharge重复）

    //private String farUpPrice;//远途加价金额（重复）

    //private String otherUpPrice;//其他加价金额（与specialTimes重复）

    //private String orderMatchTime;//订单完成时间（与calTime重复）

    //private String passengerTel;//乘客电话（重复）

    private String brand;//车辆品牌

    public DcyyMessage() {
        super();

    }

    public String getAppKey() {
        return appKey;
    }

    public void setAppKey(String appKey) {
        this.appKey = appKey;
    }


    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getDriverName() {
        return driverName;
    }

    public void setDriverName(String driverName) {
        this.driverName = driverName;
    }

    public String getDriverIdCode() {
        return driverIdCode;
    }

    public void setDriverIdCode(String driverIdCode) {
        this.driverIdCode = driverIdCode;
    }

    public String getVehicleLicense() {
        return vehicleLicense;
    }

    public void setVehicleLicense(String vehicleLicense) {
        this.vehicleLicense = vehicleLicense;
    }

    public Double getRealVehicleLon() {
        return realVehicleLon;
    }

    public void setRealVehicleLon(Double realVehicleLon) {
        this.realVehicleLon = realVehicleLon;
    }

    public Double getRealVehicleLat() {
        return realVehicleLat;
    }

    public void setRealVehicleLat(Double realVehicleLat) {
        this.realVehicleLat = realVehicleLat;
    }

    public Double getDestVehLon() {
        return destVehLon;
    }

    public void setDestVehLon(Double destVehLon) {
        this.destVehLon = destVehLon;
    }

    public Double getDestVehLat() {
        return destVehLat;
    }

    public void setDestVehLat(Double destVehLat) {
        this.destVehLat = destVehLat;
    }

    public Date getOnTime() {
        return onTime;
    }

    public void setOnTime(Date onTime) {
        this.onTime = onTime;
    }

    public Date getOffTime() {
        return offTime;
    }

    public void setOffTime(Date offTime) {
        this.offTime = offTime;
    }

    public String getRealOnLocation() {
        return realOnLocation;
    }

    public void setRealOnLocation(String realOnLocation) {
        this.realOnLocation = realOnLocation;
    }

    public String getRealOffLocation() {
        return realOffLocation;
    }

    public void setRealOffLocation(String realOffLocation) {
        this.realOffLocation = realOffLocation;
    }

    public String getPassengerTel() {
        return passengerTel;
    }

    public void setPassengerTel(String passengerTel) {
        this.passengerTel = passengerTel;
    }

    public Double getNoneMil() {
        return noneMil == null ? 0 : noneMil;
    }

    public void setNoneMil(Double noneMil) {
        this.noneMil = noneMil;
    }

    public Double getWaitMil() {
        return waitMil;
    }

    public void setWaitMil(Double waitMil) {
        this.waitMil = waitMil;
    }

    public Double getPassengerMil() {
        return passengerMil;
    }

    public void setPassengerMil(Double passengerMil) {
        this.passengerMil = passengerMil;
    }

    public Double getPassengerTime() {
        return passengerTime;
    }

    public void setPassengerTime(Double passengerTime) {
        this.passengerTime = passengerTime;
    }

    public Double getLowSpeedTime() {
        return lowSpeedTime;
    }

    public void setLowSpeedTime(Double lowSpeedTime) {
        this.lowSpeedTime = lowSpeedTime;
    }

    public Double getWaitingTime() {
        return waitingTime;
    }

    public void setWaitingTime(Double waitingTime) {
        this.waitingTime = waitingTime;
    }

    public Double getCash() {
        return cash;
    }

    public void setCash(Double cash) {
        this.cash = cash;
    }

    public Double getElePay() {
        return elePay;
    }

    public void setElePay(Double elePay) {
        this.elePay = elePay;
    }

    public Double getPosPay() {
        return posPay;
    }

    public void setPosPay(Double posPay) {
        this.posPay = posPay;
    }

    public Double getPaid() {
        return paid;
    }

    public void setPaid(Double paid) {
        this.paid = paid;
    }

    public Double getReceivable() {
        return receivable;
    }

    public void setReceivable(Double receivable) {
        this.receivable = receivable;
    }

    public Double getBargain() {
        return bargain;
    }

    public void setBargain(Double bargain) {
        this.bargain = bargain;
    }

    public Double getCallCharge() {
        return callCharge;
    }

    public void setCallCharge(Double callCharge) {
        this.callCharge = callCharge;
    }

    public Double getWaitingCharge() {
        return waitingCharge;
    }

    public void setWaitingCharge(Double waitingCharge) {
        this.waitingCharge = waitingCharge;
    }

    public Double getExtraCharge() {
        return extraCharge;
    }

    public void setExtraCharge(Double extraCharge) {
        this.extraCharge = extraCharge;
    }

    public Double getOtherExtraCharge() {
        return otherExtraCharge;
    }

    public void setOtherExtraCharge(Double otherExtraCharge) {
        this.otherExtraCharge = otherExtraCharge;
    }

    public Double getRushAddCharge() {
        return rushAddCharge;
    }

    public void setRushAddCharge(Double rushAddCharge) {
        this.rushAddCharge = rushAddCharge;
    }

    public Double getNightAddCharge() {
        return nightAddCharge;
    }

    public void setNightAddCharge(Double nightAddCharge) {
        this.nightAddCharge = nightAddCharge;
    }

    public Double getDynamicsAddCharge() {
        return dynamicsAddCharge;
    }

    public void setDynamicsAddCharge(Double dynamicsAddCharge) {
        this.dynamicsAddCharge = dynamicsAddCharge;
    }

    public Double getSpecialTimes() {
        return specialTimes;
    }

    public void setSpecialTimes(Double specialTimes) {
        this.specialTimes = specialTimes;
    }

    public String getSpecialTimesNote() {
        return specialTimesNote;
    }

    public void setSpecialTimesNote(String specialTimesNote) {
        this.specialTimesNote = specialTimesNote;
    }

    public Double getDriverIncome() {
        return driverIncome;
    }

    public void setDriverIncome(Double driverIncome) {
        this.driverIncome = driverIncome;
    }

    public Double getDriverReceivable() {
        return driverReceivable;
    }

    public void setDriverReceivable(Double driverReceivable) {
        this.driverReceivable = driverReceivable;
    }

    public String getTransPriceType() {
        return transPriceType;
    }

    public void setTransPriceType(String transPriceType) {
        this.transPriceType = transPriceType;
    }

    public String getPosAgency() {
        return posAgency;
    }

    public void setPosAgency(String posAgency) {
        this.posAgency = posAgency;
    }

    public String getePay() {
        return ePay;
    }

    public void setePay(String ePay) {
        this.ePay = ePay;
    }

    public String getCalStatus() {
        return calStatus;
    }

    public void setCalStatus(String calStatus) {
        this.calStatus = calStatus;
    }

    public Date getCalTime() {
        return calTime;
    }

    public void setCalTime(Date calTime) {
        this.calTime = calTime;
    }

    public String getBillStatus() {
        return billStatus;
    }

    public void setBillStatus(String billStatus) {
        this.billStatus = billStatus;
    }

    public Integer getEncrypt() {
        return encrypt;
    }

    public void setEncrypt(Integer encrypt) {
        this.encrypt = encrypt;
    }

    public String getOnArea() {
        return onArea;
    }

    public void setOnArea(String onArea) {
        this.onArea = onArea;
    }

    public Date getBookDepTime() {
        return bookDepTime;
    }

    public void setBookDepTime(Date bookDepTime) {
        this.bookDepTime = bookDepTime;
    }

    public String getBookModel() {
        return bookModel;
    }

    public void setBookModel(String bookModel) {
        this.bookModel = bookModel;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getLineName() {
        return lineName;
    }

    public void setLineName(String lineName) {
        this.lineName = lineName;
    }

    public Double getFarUpPrice() {
        return farUpPrice;
    }

    public void setFarUpPrice(Double farUpPrice) {
        this.farUpPrice = farUpPrice;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getYyFlage() {
        return YyFlage;
    }

    public void setYyFlage(String yyFlage) {
        YyFlage = yyFlage;
    }

    public String getDriCertNo() {
        return driCertNo;
    }

    public void setDriCertNo(String driCertNo) {
        this.driCertNo = driCertNo;
    }

    public String getVehCertNo() {
        return vehCertNo;
    }

    public void setVehCertNo(String vehCertNo) {
        this.vehCertNo = vehCertNo;
    }

    public String getIdCode() {
        return idCode;
    }

    public void setIdCode(String idCode) {
        this.idCode = idCode;
    }

    public SjwzMessage getSjwzMessage() {
        return sjwzMessage;
    }

    public void setSjwzMessage(SjwzMessage sjwzMessage) {
        this.sjwzMessage = sjwzMessage;
    }

    public SjwzMessage getOnSjwzMessage() {
        return onSjwzMessage;
    }

    public void setOnSjwzMessage(SjwzMessage onSjwzMessage) {
        this.onSjwzMessage = onSjwzMessage;
    }

    public SjwzMessage getOffSjwzMessage() {
        return offSjwzMessage;
    }

    public void setOffSjwzMessage(SjwzMessage offSjwzMessage) {
        this.offSjwzMessage = offSjwzMessage;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public Date getOrderTime() {
        return orderTime;
    }

    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }
}
